package D1;

public class OutClass {

    private int a;
    static int b;
    int c;

    public void methodA(){
        a = 10;
        System.out.println(a);
    }

    public static void methodB(){
        System.out.println(b);
    }

    //实例内部类
    class InnerClass{
        int a;
        int c;
        public void methodInner(){

            c = 20;//在实例内部类中可以直接访问 外部类中的 任意访问修饰限定符的 成员
            OutClass.this.a = 60;//访问外部类同名的成员需要： 外部类名称.this.同名成员
            System.out.println(OutClass.this.a);//输出60
            a = 99;//外部类和内部类 具有相同名称的成员时，优先访问 自己内部类的成员
            System.out.println(a);//输出99
            methodA();//输出10
            b = 30;
            System.out.println(b);//输出30
            methodB();//输出30
        }
    }

    public static void main(String[] args) {
        //实例内部类的访问
        //需要先创建 外部类对象，然后借助 外部类对象 才能 创建实例内部类对象
        OutClass outClass = new OutClass();
        OutClass.InnerClass innerClass = outClass.new InnerClass();
        innerClass.methodInner();
    }
}
